تماشای برخط [لینک مستقیم] فیلم آموزشی «قالب» ( لینک دانلود در ادامه مطلب )
زیر نویس انگلیسی [English Subtitle] ( لینک دانلود در ادامه مطلب )
دریافت نسخهی pdf این آموزش [1.61 مگابایت] ( لینک دانلود در ادامه مطلب )
تو آموزش قبل با سبکهای نمایش آشنا شدیم، قالب هم یه چیزی تو همون مایههاست، تفاوتش اینه که قالب به کل یه فعالیت (activity) یا کل یه پروژه اعمال میشه ولی سبکنمایش فقط به یه شی اعمال میشه.
۱. یه پروژه جدید بسازید و فایل activity_main.xml (در زیرشاخه res->layout) رو باز کنید، (اگر همین الان پروژه رو ساختید خودش این فایل رو براتون باز می کنه). از ستون سمت چپ چند تا شی بندازید تو صفحه (تا وقتی قالب رو عوض میکنید متوجه تغییرات بشید). اندروید خودش به صورت پیشفرض، یک عالمه قالب مختلف برای صفحات فعالیت و پروژه داره، از منوی بالا اونجا که نوشته app theme کلیک کنید، یه فهرست براتون باز میشه که قالبها رو دستهبندی کرده، میتونید هر کدوم از قالبها رو امتحان کنید و تاثیرش رو روی صفحهتون ببینید.
مثلا از گزینه Theme، قالب Theme.Translucent رو انتخاب کنید، در این حالت شما هیچ پسزمینهای ندارید و همه اشیائی که در صفحه میگذارید روی پسزمینه خود گوشی نمایش داده میشه (یا هرچیزی که قبلش اجرا شده باشه)
حالا Theme.Dialog رو انتخاب کنید. این قالب همونطور که از اسمش پیداست، مربوط به محاوره است، مثلا دیدید تو بعضی برنامهها وقتی میخواید از برنامه خارج بشید یه صفحه کوچکتر یهو وا میشه میپرسه «آیا واقعا میخواید خارج بشید؟»، در اون مواقع از این قالب استفاده شده.
۲. اگر قالبی رو همونطور که تو مرحلهی قبل گفته شد انتخاب کنید، در واقع به برنامهی شما اعمال نمیشه، برای اینکه قالب برنامهتون رو تغییر بدید باید AndroidManifest.xml رو باز کنید و به زبانه Application برید. جایی که نوشته Theme جلوش دکمه Browse رو بزنید و بعد هم از بالاش دکمه System Resources و قالب مورد نظرتونو انتخاب کنید.
میتونید همین کارو از قسمت ویرایش متنی انجام بدید، اونجایی که برچسب application وجود داره، یه خط هست که نوشته android:Theme که مساوی قالبی که مدنظرتون هست قرار بدید.
توجه دارید که میشه فقط قالب یه فعالیت (activity) رو تغییر بدید که مشابه همین کارو (در قسمت ویرایش متنی) برای داخل برچسب اون فعالیت انجام میدید.
حالا برنامه رو تو شبیه ..............................................
برچسبها:
ادامه مطلب
تماشای برخط [لینک مستقیم] فیلم آموزشی «سبکهای نمایش» ( لینک دانلود در ادامه مطلب )
زیر نویس انگلیسی [English Subtitle] ( لینک دانلود در ادامه مطلب )
دریافت نسخهی pdf این آموزش [1.15 مگابایت] ( لینک دانلود در ادامه مطلب )
سبک نمایش پیشفرض اندروید، ممکنه قشنگ به نظر برسه اما خیلی ها دوست دارن که خودشون تعیین کنن که هر چیزی چطور نمایش داده بشه، منظورم ابعاد و رنگ و خیلی ویژگیهای ظاهری دیگه است. میخوایم تو این آموزش یاد بگیریم چطور یه سبک نمایش بسازیم و در قسمتهای مختلف ازش استفاده کنیم.
۱.برای شروع یه پروژه جدید بسازید و فایل activity_main.xml (در زیرشاخه res->layout) رو باز کنید، (اگر همین الان پروژه رو ساختید خودش این فایل رو براتون باز می کنه) روی متن Hello world کلیک کنید، حالا میخوایم یه سری از ویژگیهاشو تغییر بدیم، مثلا اندازهاش، فونتاش و رنگش. من این تغییرات رو دادم: رنگ f00 اندازه 25sp فونت serif و text style: bold
۲.حالا میخوایم یاد بگیریم که چطور همین ویژگیها رو دوباره روی یه متن دیگه اعمال کنیم بدون اینکه ریزه کاری ها رو دوباره انجام بدیم. یعنی یه سبک با همین مشخصات می سازیم و روی هر متنی که خواستیم اون سبک رو اعمال میکنیم تا همین تغییرات روش اعمال بشه. این کار به درد زمانی میخوره که شما می خواید مثلا تمام دکمههاتون یه رنگ و شکل و اندازه خاص داشته باشن و وقتی پروژه بزرگ باشه اعمال کردن همه تغییرات به صورت تک به تک واقعا زمانبره و درست کردن یه سبک کلی، خیلی کمک میکنه.
برای ساختن یه سبک نمایش، فایل styles.xml (زیر شاخه res->values) رو باز کنید. قسمت متنی رو از روی زبانهی پایین انتخاب کنید.
۳.همون طور که میبینید قبلا دوتا سبک نمایش (style) تو این فایل تعریف شده، حالا ما هم میخوایم یکی دیگه تعریف کنیم، هر سبک نمایش اول احتیاج به یه اسم داره، مثلا من میذارم ekhtar، بعد هم باید از یک نوع سبک نمایش ارثبری کنیم، چون در غیر اینصورت باید تمامی ویژگی های اون سبک رو تعریف و مقداردهی کنیم که عملا کار عقلانی نیست چون هر شیای هزاران ویژگی داره که ممکنه ما فقط بخوایم یه موردشو تغییر بدیم. از اونجایی که الان میخوایم سبک نمایش متن رو گسترش بدیم بهتره به عنوان والد (parent) از ظاهرمتن ...........................................
برچسبها:
ادامه مطلب
تماشای برخط [لینک مستقیم] فیلم آموزشی «فهرستهای سفارشی» ( لینک دانلود در ادامه مطلب )
زیر نویس انگلیسی [English Subtitle] ( لینک دانلود در ادامه مطلب )
دریافت نسخهی pdf این آموزش [757 کیلوبایت] ( لینک دانلود در ادامه مطلب )
تو آموزش قبلی یاد گرفتیم که چطور یک فهرست ساده درست کنیم. حالا میخوایم یاد بگیریم که چطور اون فهرست رو سفارشی کنیم و ازحالت سادگی درش بیاریم.
۱.مثل آموزش قبل یه پروژه با یک فهرست ساده بسازید در ادامه میخوایم برای هر ردیف از فهرستمون یه عکس نشان اون دانشگاه رو هم کنار اسمش بندازیم. پس اول از همه تصاویر مورد نظر رو به پروژه مون در زیرشاخه res و پوشه drawable-hdpi اضافه میکنیم، فایل عکسهایی که من استفاده کردم رو میتونید از اینجا دانلود کنید. وارد کردنش به پروژه هم کار آسونیه، هرجایی که عکسهاتون هست کپی کنید و بعد روی پوشه drawable-hdpi راست کلیک کنید و paste.
۲.اولین کاری که باید بکنیم اینه که یه طرحبندی برای هر ردیف از فهرست درست کنیم. تا با توجه به اون اندروید اطلاعتمون رو در هر ردیف بدونه چطور نمایش بده. پس احتیاج داریم تا یه فایل xml برای طرحبندیمون بسازیم. روی فولدر layout (در res) راست کلیک کنید. گزینه New و other رو انتخاب کنید. (این تصویر) بعد هم از زیرشاخه Android گزینه Android XML Layout File رو انتخاب کنید و براش اسم بذارید من اسمشو میذارم redife_fehrest.
۳. خوب اولین چیزی که هر ردیف میخوایم داشته باشه یه تصویره، پس یه نمایتصویر (imageView) در فایل تازه ساخته شدمون میذاریم. نمایتصویر رو میتونید از ستون سمت چپ از بخش Images & Media بکشید و روی صفحه رها کنید. همین که رهاش میکنید یه پنجره باز میشه که ازتون میخواد منبع عکس رو مشخص کنید، و اگه به درستی تصاویرتون رو وارد کرده باشید، میبینیدشون.
۴.هر ردیف قراره یه متن داشته باشه که نام دانشگاه درش نوشته بشه، پس یه نمایمتنی (TextView) هم وارد صفحه میکنیم و کنار نمایتصویر میذاریم. الان تصویرمون در کنار متن اینطوریه که به نظر خیلی مطلوب نمییاد
میتونیم یه کم ویژگیهای متن رو تغییر بدیم، مثه اندازه، فاصله از بالای صفحه و سمت راستش و ...
۵.به فایل MainActivity.java (در src) میریم. در آموزش قبل یک آرایهیوفقدهنده درست کرده بودیم:
setListAdapter (newArrayAdapter<String>(this, android.R.layout.simple_list_item_1, getResources ().getStringArray(R.array.daneshgah)));
حالا باید برای این فهرست سفارشیمون خودمون کلاس وفقدهنده (Adapter) بسازیم. پس ........................................................
برچسبها:
ادامه مطلب
تماشای برخط [لینک مستقیم] فیلم آموزشی «فهرستها» ( لینک دانلود در ادامه مطلب )
زیر نویس انگلیسی [English Subtitle] ( لینک دانلود در ادامه مطلب )
دریافت نسخهی pdf این آموزش [719 کیلوبایت] ( لینک دانلود در ادامه مطلب )
یکی از مواردی که تو خیلی از برنامه می بینید فهرست هست. فهرست در واقع جایی به کار میره که شما میخواید از بین یه سری گزینه تو فهرست یکی رو انتخاب کنید مثه انتخاب نام کشور خودتون در بین همه کشورها یا اینکه یه سری اطلاعات رو قراره تو قالب یک فهرست مشاهده کنین.
۱.خوب برای شروع یه پروژه اندروید بسازید. (تصویر متحرک ساختن پروژه) و در فولدر res روی فولدر values راست کلیک کنید و New بعد هم Other.
حالا از زیرساخه Android روی Android XML Values Files کلیک کنید و یه اسمی براش بذارید. من اسمشو میذارم daneshgah.
۲.فایلی که ساختید براتون باز میشه، روی زبانهی daneshgah.xml کلیک کنید تا خود فایل رو براتون باز کنه و این آرایهی رشتهها رو توش وارد کنید. ما قراره این ............................
برچسبها:
ادامه مطلب
تماشای برخط [لینک مستقیم] فیلم آموزشی «دکمه» ( لینک دانلود در ادمه مطلب )
زیر نویس انگلیسی [English Subtitle] ( لینک دانلود در ادمه مطلب )
دریافت نسخهی pdf این آموزش [325 کیلوبایت] ( لینک دانلود در ادمه مطلب )
تا اینجا هرجا خواستیم از دکمه استفاده کنیم، از همون نوع سنتی و سادهاش استفاده کردیم، حالا میخوایم یاد بگیریم چطور از انواع دیگهی دکمه استفاده کنیم.
۱. اول یه پروژهی اندروید بسازید. (تصویر متحرک ساختن پروژه) بعد میتونیم در فایل activity_main.xml (در res->layout) از قسمت Palette انواع مختلف دکمهها رو امتحان کنیم، الان اونی که روش نوشته off رو بکشید و روی صفحه بندازید.
، این نوع دکمه برای خاموش روشن کردن تنظیمات دلخواه به کار می ره و این طوریه
شما میتونید به راحتی ظاهرش رو تغییر بدید و مناسب برنامهتون بکنید و میبینید که چقدر کار رو ساده کرده.
از انواع دیگهی دکمه، دکمهی رادیویی (radio) و دکمهی علامتصحیح (checkbox) هستند که میتونید از تو ............................
برچسبها:
ادامه مطلب
تماشای برخط [لینک مستقیم] فیلم آموزشی «واحدها» ( لینک دانلود در ادامه مطلب )
زیر نویس انگلیسی [English Subtitle] ( لینک دانلود در ادامه مطلب )
دریافت نسخهی pdf این آموزش [641 کیلوبایت] ( لینک دانلود در ادامه مطلب )
خوب تا الان به طور پیش فرض از صفحهبندی نسبی (RelativeLayout) برای واسط کاربری پروژههامون استفاده میکردیم. حالا میخوایم با انواع صفحهبندی آشنا بشیم.
۱.یه پروژه جدید در ایکلیپس بسازید و از فولدر res به زیر شاخه layout برید و activity_main.xml رو باز کنید. وقتی از منوی پایین روی activity_main.xml کلیک میکنیم و به کد مربوط به این فایل میریم، میبینیم که در اولین خط نوع صفحهبندی تعیین شده.
۲.صفحهبندی نسبی که به طور پیشفرض برای تمام پروژههای اندروید قرار داره، بگونهای که ما میتونیم، نسبت به دیوارههای اطراف یا اشیائی که در صفحه قرار دارند، اشیا جدید رو قرار بدیم، الان همون متنی که تو صفحه هست رو حذف کنید و مثلا یه دکمه میخوایم به صفحه اضافه کنیم، وقتی دکمه رو از منوی سمت چپ میکشیم، هرجایی در صفحه که بخوایم قرارش بدیم، به طور نسبی مشخص میکنه اون دکمه چه وضعیتی با دیوارههای اطراف داره، و بعد اون رو جایی که به نظرمون مناسبه رها میکنیم. (مثلا ۹۰ dp از بالا و ۹۰ dp از چپ فاصله داشته باشه) حتی وقتی دکمه رو روی صفحه رها میکنیم، هنوز برامون مشخص میکنه که اندازههای ما نسبت به دیوارههای سمت چپ و بالاست (با دو تا فلش سبز رنگ)
۳.حالا بیاید یه RadioButton رو به صفحه اضافه کنیم، میتونیم طوری تنظیمش کنیم که نسبت اون رو با دکمهای که قبلا اضافه کرده بودیم بسنجیم و قرارش بدیم. الان دکمهی قبلی و این radioButton به عنوان یک مجموعه در نظر گرفته میشن، چون جای قرار گرفتنشون نسبت به هم سنجیده شده، حالا اگه جای دکمهی اولی رو تغییر بدیم، radioButton هم به تبعیت از اون تغییر می کنه. (همین طور اگه radioButton.........................
برچسبها:
ادامه مطلب
تماشای برخط [لینک مستقیم] فیلم آموزشی «واحدها» ( لینک دانلود در ادامه مطلب )
زیر نویس انگلیسی [English Subtitle] ( لینک دانلود در ادامه مطلب )
دریافت نسخهی pdf این آموزش [352 کیلوبایت] ( لینک دانلود در ادامه مطلب )
وقتی که برای اندازههای مختلف صفحه می خوایم برنامه درست کنیم، اولین چیزی که لازمه بدونیم واحدهای اندازهگیری در اندرویده، تا بتونیم طوری برنامه رو توسعه بدیم که تو اندازه صفحههای مختلف به درستی نمایش داده بشه.
۱.خوب برای اینکه بهتر متوجه بشیم، یه پروژه جدید در ایکلیپس میسازیم.
از فولدر res زیر شاخه layout و activity_main.xml رو باز میکنیم و محیط گرافیکی اون برامون باز میشه. به طور پیشفرض صفحهبندی نسبی (RelativeLayout) برای همه پروژهها در نظر گرفته شده. حالا اگه روی activity_main.xml کلیک کنیم می بینیم که در اولین خط نوشته RelativeLayout یعنی نوع صفحه بندی نسبی است.
۲.حداقل تنظیماتی که هر شی در اندروید نیاز داره، ارتفاع و عرض در صفحهبندیه. مثلا در قسمت صفحهبندی نسبی نوشته :
یعنی عرض و ارتفاع صفحه بندی به صورتی باشه که تمام فضای والد خودش رو پر کنه (fill_parent) یعنی تمام صفحه رو بپوشونه.
حالا میتونیم به قسمت گرافیکی activity_main.xml بریم و اون متن رو حذف کنیم و از منوی سمت چپ یه دکمه روی صفحه بکشیم و رها کنیم. وقتی به قسمت کد activity_main.xml میریم میبینیم که اون هم برای خودش ارتفاع و عرض داره که با عبارت «wrap_content» پر شده، به این معنی که فقط به همون اندازه که نیاز داره، فضا اشغال میکنه.
android:layout_width="wrap_content" android:layout_height="wrap_content"
۳.برای دیدن مشخصات دکمهای که ایجاد کردیم، از منوی سمت راست properties رو انتخاب میکنیم (اگه منوی properties رو ندارید، از منوی بالای ایکلیپس روی window بعد show view و other کلیک کنید و در زیرشاخه General گزینه properties رو انتخاب کنید تا براتون پنجره اش باز بشه و اگه دلتون بخواد میتونید اونو در سمت راست بذارید) این منو به ما اجازه میده مشخصات هر چیزی که در قسمت گرافیکی انتخاب کردیم رو تغییر بدیم. الان میتونید رو دکمهای که تو شکل مشخص کردم (پر کردن ارتفاع: toggle fill height) کلیک کنید تا بینید که در قسمت توضیحات درباره ارتفاع دکمه نوشته شده : match_parent به این معنی که طول اون شی رو انقدر اضافه میکنه تا به اندازه ........................................
برچسبها:
ادامه مطلب
تماشای برخط [لینک مستقیم] فیلم آموزشی «اشکال زدایی برنامه» ( لینک دانلود در ادامه مطلب )
زیر نویس انگلیسی [English Subtitle] ( لینک دانلود در ادامه مطلب )
دریافت نسخهی pdf این آموزش [1.89 مگابایت] ( لینک دانلود در ادامه مطلب )
تابحال تو دو تا از پست ها بهتون نشون داده شده که چجوری از DDMS برای مشاهده واقعی گزارشات ثبت شده (log) مربوط به برنامه که ناشی از دستگاهتون یا شبیهسازتونه، استفاده کنید. این کار بهتون کمک میکنه که بتونید خطاهای برنامهتونو رفع کنید یا فقط ببینید چه اتفاقی داره در حال اجرا مییفته.
در این مطلب میخوایم یه مقدار بیشتر به روشهای خطایابی های قدیمی بپردازیم.
1. اول یه پروژه جدید ایجاد کنید.
2. میریم سراغ فولدر res بعد layout ، فایل activity_main.xml رو باز میکنیم، از قسمت pallette یه TextViewو Button و EditText میکشیم میاریم رو صفحه. البته TextView معمولا به صورت پیش فرض هست(همون HelloWord).
و برنامه رو ذخیره میکنیم.
3. حالا اگر بخوایم برنامه مونو اشکال زدایی کنیم، باید یه چیزی به manifest اضافه کنیم که اجازه این کارو بهمون بده.
پس فایل Androidmanifest.xml رو باز میکنیم و رو زبانه Application کلیک میکنیم.
میتونیم مشخصهی debuggable رو همون بالا ببینیم. اگر بخوایم برنامهمونو به اشکال زدای ایکلیپس متصل کنیم، باید این مشخصه رو فعال(true) کنیم.
۴. میخوایم تو فایل جاوای برنامه مون اعلام کنیم که در صورت فشردن دکمه چیکار کنه. پس با این کد یه نمونه از دکمه میسازیم و به دکمهای که قبلا رو صفحه گذاشته بودیم متصل میکنیم.
Button dokme =(Button)findViewById(R.id.button1);
و بعد تابعی که قراره موقع کلیک دکمه صدا زده بشه رو میسازیم.
dokme.setOnClickListener(newOnClickListener(){@Overridepublicvoid onClick(View v){// TODO Auto-generated method stub }});
۵. روی DDMS کلیک کنید و LogCat رو ببینید. البته بدون رفتن تو DDMS هم میتونید LogCat رو ببینید، از منوی که پایین ایکلیپس قرار داره میتونید پیداش کنید. LogCat در واقع هر چیزی رو که تو دستگاه اندروید در حال وقوعه، گزارش میکنه. پس به ازای هر ضربه ای که به صفحه ی دستگاهتون میزنید، اگر کار خاصی انجام بدید، شروع میکنه به ساختن اطلاعات گزارشی. ولی ما میتونیم اطلاعاتی رو که خودمون درباره برنامهمون میخوایم هم اونجا قرار بدیم.
۶. پس به فایل جاوا برمیگردیم. اینجا از کلاس Log که تو بسته ی android.util هست، استفاده میکنیم.
تو این کلاس چندتا تابع وجود داره که میتونیم ازشون برای تهیه گزارش از هرچیزی تو LogCat استفاده کنیم. مثلا تابع d یه پیغام اشکال زدایی ارسال میکنه و ورودیهاش یه برچسب(tag) و یه پیغام(msg) هست. البته اگر بخوایم یه استثنایی رو هم گزارش کنیم، میتونیم یه شیء throwable رو به عنوان ورودی بهش بدیم.
همچنین تابع e رو داریم که برای گزارش استثناء بکار میره، تابع i یه پیغام اطلاعاتی و تابع v پیغام طولانی رو گزارش میکنه. w هم برای اخطاره. و اما جالب ترین چیزی که اینجا وجود داره، wtf هستش که مخفف اینه: What a Terrible Failure یعنی چه خرابی وحشتناکی و بیانگر چیزیه که انتظار نداشتیم تو سیستم اتفاق بیفته.
حالا ما میخوایم از تابع d استفاده کنیم. تو قسمت tag هر چیزی میتونه باشه، فقط باید یه جوری باشه که بتونیم از بین گزارشای دیگه توی LogCat تشخیصش بدیم. من اینجا با حروف بزرگ، سه بار مینویسم A. به عنوان پیغام هم اعلام میکنم که دکمه کلیک شده.
publicvoid onClick(View v){// TODO Auto-generated method stubLog.d("AAA","dokme feshorde shode");}
7. کاری که من میخوام انجام بدم اینه که یه نقطه توقف (break point) به قطعه کد بالا اضافه کنم، بطوریکه اجرای برنامه رو تو اون نقطه متوقف کنه و به ما اجازه اشکال زدایی (debug) بده. به ستونی که سمت چپ کدتون هست توجه کنید. روی اون ستون، دقیقا روبروی خط سوم، دوبار کلیک کنید تا یه break point ایجاد بشه. مطمئنا هر کدوم از شما که قبلا کدش رو دیباگ کرده، این کارو انجام داده.
و بعد اون علامت دیباگ بالای صفحه رو میزنیم.
و گزینه اول، یعنی Android Application رو انتخاب میکنیم.
۸. تو شبیهساز اول یه پیغام نشون میده مبنی بر اینکه منتظر اشکال زدا (Debugger) بوده.
در واقع منتظر اشکال زدای ایکلیپس بوده که به برنامهمون متصل شه. یه کمی صبر کنید متصل میشه.
وقتی رو دکمه ای که ساختیم کلیک کنیم، میبینیم که خودش ما رو میبره به قسمت debug توی ایکلیپس.
البته بسته به اینکه قبلا رو ایکلیپس چه کارایی انجام دادید، ممکنه یه پیغام نشون بده و ازتون بپرسه که آیا میخواید به قسمت اشکال زدا (debug) برید یا نه؟ که فقط کافیه بله رو بزنید.
۹. اگه یه نگاهی به logcat بندازید، متوجه میشید که پیغاممون رو گزارش نکرده. به خاطر اینکه برنامه مون رو تو اون نقطه متوقف کرده. پس رو علامت ادامه کلیک میکنیم تا اجرا ادامه پیدا کنه و اینجاست که میبینید پیغاممون گزارش میشه.
ستون Tag تو LogCat در واقع نشون دهندهی اینه که کدوم فرایند، یا کدوم برنامه این پیغام رو ارسال کرده.
۱۰. یه چیز دیگه که باید درمورد LogCat بهش توجه کنیم، اینه که مقدار عظیمی از اطلاعات رو، درمورد هر اتفاقی که تو دستگاه میافته، گزارش میکنه. ولی اگه بخوایم که فقط اطلاعات مربوط برنامه مون گزارش بشه چی؟
کاری که باید انجام بدیم اینه که یه فیلتر تنظیم کنیم. پس روی علامت که اون بالاست، کلیک میکنیم. و من اسم فیلترمو میذارم A و بهش میگم اون گزارش هایی رو نشون بده که با برچسب AAA علامت گذاری شدن.
و بعد مشاهده میکنید
.....................................................
برچسبها:
ادامه مطلب
تماشای برخط [لینک مستقیم] فیلم آموزشی «درک امنیت و اجازهها» ( لینک دانلود در ادامه مطلب )
زیر نویس انگلیسی [English Subtitle] ( لینک دانلود در ادامه مطلب )
دریافت نسخه pdf این آموزش [حجم ۶۶۱ کیلوبایت] ( لینک دانلود در ادامه مطلب )
ممکنه تا بحال موقع دانلود و نصب یه برنامه اندرویدی توی گوشیتون، به یه همچین پیغامی برخورده باشید که بهتون میگه این برنامه کاربردی که دارید نصب میکنید، به فلان مجوز نیاز داره. مثلا ممکنه بخواد به دوربین دستگاهتون دسترسی داشته باشه، و اونو اینطوری اعلام کنه: "همونطور که میدونید، این برنامه ای که در حال دانلود اون هستید، قراره به دوربین شما دسترسی داشته باشه، بنابراین بهتره به سازنده این برنامه اعتماد کنید".بنابراین اگر شما میخواید برنامهتون بتونه به چیزای مشخصی از دستگاه دسترسی داشته باشه، لازمه که به صراحت اعلام کنید که من برای استفاده از فلان امکانات مشخص، نیاز به مجوز دارم.
پس بذارید یه برنامه رو بررسی کنیم که بطور مشخص قراره باهاش وضعیت wi-fi دستگاه رو بررسی کنیم. میخوایم بدونیم که آیا wifi اتصال داره یا نه؟ یا در واقع آیا کاربر میتونه از طریق wifi به اینترنت وصل بشه یا نه؟
۱. اول یه پروژه جدید ایجاد میکنیم و به کلاس MainActivity.java میریم.
۲.کاری که قراره انجام بدیم اینه که تو تابع onCreate تلاش کنیم به وضعیت wifi دسترسی داشته باشیم. در اینجا نیاز به ساختن یه نمونه از کلاس ConnectivityManager داریم که من اسمشو به اختصار، conman گذاشتم.
هر وقت نیاز داریم که سرویسی رو از سیستمی بگیریم، باید درخواست دسترسی به اون سرویس رو بدیم. برای این کار از تابع getSystemService استفاده میکنیم. بعدش فقط لازمه اسم اون سرویسی که میخوایم بهش دسترسی داشته باشیم رو وارد کنیم. که تو اینجا بهش از طریق یه ثابت ایستا که تو کلاس Context به نام CONNECTIVITY_SERVICE هست ارجاع میدیم.
ConnectivityManager conman =(ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
۳. حالا میخوایم، توی متنی که به صورت پیش فرض همه پروژههای جدید دارن، بنویسیم که آیا wifi متصل هست یا نه. و چون به صورت پیش فرض این فیلد متنی شناسه نداره به activity_main.xml می ریم و برای اون یه شناسه تعریف میکنیم.
نحوه تعریف کردن شناسه اینطوره که در فایل activity_main.xml، در تگ TextView مینویسیم "android:id="@id/matneman و چون این اولین باره که این شناسه رو تعریف می کنیم، یه علامت مثبت (+) هم کنار کلمه id می نویسیم، یعنی اینطوری:
android:id="@+id/matneman"
۴. تو تابع onCreate به متنمون داخل xml ارجاع میدیم.
TextView matn =(TextView) findViewById (R.id.matneman);
۵. اطلاعات مربوط به وضعیت wifi رو تو یه متغیر boolan به نام wifi میریزیم. برای همین از کلاس ConnectivityManager استفاده میکنیم. تابع getNetworkInfo اطلاعاتی که بخوایم رو از شبکه میگیره. حالا برای ورودی این تابع باید اون اطلاعاتی که احتیاج داریم رو بدیم، ما الان به اطلاعات wifi احتیاج داریم
برچسبها:
ادامه مطلب
تماشای برخط [لینک مستقیم] فیلم آموزشی «نحوه ی ساخت و استفاده از منابع» ( لینک دانلود در ادمه مطلب )
زیر نویس انگلیسی [English Subtitle] ( لینک دانلود در ادمه مطلب )
دریافت نسخه pdf این آموزش [1.73 مگابایت] ( لینک دانلود در ادمه مطلب )
وقتی دارید برنامتون رو میسازید احتمال زیاد از منابع بیرونی هم استفاده خواهید کرد، مثل فایلهای ویدیویی یا شنیداری، تصاویر، xml و ... پس باید بدونید چطور از داخل برنامتون به این منابع ارجاع بدید. منابع برنامتون داخل پوشه ی res ذخیره می شن. و یه سری فایلها به صورت خودکار بهش اضافه می شه مثل :
layout : شامل فایل های xml ای که مربوط به محیط های کاربریه.
values : شامل تمام مقادیریه که توی برنامتون تعریف می کنید و بهشون یه اسم می دید و بعدا با اون اسم بهشون رجوع می کنید و ازشون استفاده می کنید.
فایل string.xml هم به طور پیش فرض در این فولدر به وجود اومده. نحوهی کارکرد string.xml این طوریه که ما یه سری منابع رشتهای داریم که مثلا (با توجه به تصویر) هرجا که تو برناممون بخوایم از Hello World, Main! استفاده کنیم، به جاش می تونیم به این منبع ارجاعش بدیم و بنویسیم hello.
حالا چرا این منابع رو بیرون نگه میداریم؟ به خاطر اینکه بتونیم متغیرهای سراسری (global) داشته باشیم، مثلا می تونیم چند تا فولدر برای زبان های مختلف داشته باشیم و فقط لازمه که به فایل xml مربوط به اون زبان بریم و دیگه لازم نیست تمام کدهای برناممون رو به خاطر تغییر زبان کاربر تغییر بدیم.
۲.اگه به سایت اصلی توسعه اندروید مراجعه کنید یه قسمت داره به اسم API Guide که توش راهنمایی های مفیدی برای ساخت برنامه کرده، یکی از این راهنماها مربوط به منابع می شه، خود اندروید به طور پیش فرض یه سری از فولدرها رو تو res تشخیص میده مثلا
اگه فولدر anim رو درست کنید و توش یه فایل xml مخصوص انیمیشن بذارید، اندروید متوجه می شه که انیمیشنه. (تو آموزش های بعدی مفصل به انیمیشن می پردازیم).
یا مثلا اگه میخواید یه لیستی از رنگ ها رو در برنامتون استفاده کنید می تونید تو فولدر color بذاریدشون.
هر کدوم از عکسهامون یا هر فایل xml مربوط به گرافیک در داحل فولدر drawable قرار می گیره.
فولدر layout شامل فایلهای xml مربوط به چیدمان صفحه است.
اگه بخوایم منو برای برناممون بسازیم (که بعدا آموزش داده خواهد شد) باید اونو تو فولدر menu بذاریم و ...
چون تمام این منابع نوعی assets هستن، ممکنه از خودتون بپرسید پس این فولدر assets چیه (معمولا بالای فولدره bin هست)، در واقع می تونید منابعتون رو تو این فولدر بذارید ولی نمی تونید با یک id بهشون ارجاع بدید. به همین خاطر بهتره تمام منابع رو توی همون فولدر res قرار بدیم چون به طور خودکار براشون id ساخته می شه و با دستور R.id می تونید بهشون رجوع کنید.
۳.اگه تو زیر شاخه های فولدر res دقت کرده باشید، خود فولدر drawable به تنهایی وجود نداره بلکه سه تا فولدر drawable-hdpi، drawable-ldpi و drawable-mdpi وجود دارن، این به خاطر یک ویژگی مهمه اندرویده که دستگاه ها رو به سه وضوح تصویر تقسیم بندی کرده : دستگاههای با وضوح تصویر بالا (High dpi)، دستگاههای با وضوح تصویر متوسط (Medium dpi) و دستگاههای با وضوح تصویر پایین (Low dpi). برای هر کدوم از این وضوح تصویرهای مختلف میتونیم assetهای مربوط به خودشون رو بذاریم، و سیستم اندروید با توجه به دستگاهی که داره روش اجرا میشه، asset مربوطه رو بیرون میکشه و در برنامه ازش استفاده می کنه (توی یه آموزش دیگه بهش میپردازیم) ولی فقط بدونید که اگر از یه asset خواستید که تو همهی وضوح تصاویر استفاده بشه، کافیه فقط توی drawable-hdpi بذاریدش، اون وقت تو یه دستگاه با وضوح تصویر متوسط یا پایین هم سیستم از تو فولدر drawable-hdpi برشون میداره.
۴.راحتترین راه برای اضافه کردن asset به برنامهتون اینه که محتوایی که می خواید رو بکشید و تو فولدر مورد نظر ول کنید.
برای این که به پیغام خطا برخورد نکنید حواستون باشه اسم asset هایی که میخواید وارد کنید فقط میتونه شامل حروف a تا z، اعداد 0 تا 9 و خط زیر باشه.
۵.تو فولدر gen اگه R.java رو باز کنید، میبینید که به اون asset جدیدی که اضافه کردید یه عدد نسبت داده، لازم نیست برای ارجاع به این asset اون عدد رو استفاده کنید بلکه از راه دیگه ای این کارو میکنیم که الان توضیح میدم. (حواستون باشه که اصلا تغییری هم توی فایل R.java ایجاد نکنید چون این فایل به طور خودکار ..................................
برچسبها:
ادامه مطلب













